/**
 * FileName: MaopaoSort
 * Author:   powersi
 * Date:     2021/3/13 7:44
 * Description:
 */
package com.zm.demo.core.sort;

import java.util.Arrays;

/**
 * Description:
 * 主要思想：未排序的元素里面找出极值（最大值或者最小值），将其置于未排序的最后一位，即已排序的不参与后续排序。
 * Author:      powersi
 * Date:        2021/3/13 7:44
 */
public class MaopaoSort {

    public static void main(String[] args) {
        int[]a = {0, 1,2,4,5,7,8,4,3,6};

        // 每循环一次，最后一个元素变为最大值或者最小值
        // 因此，每一次冒泡之后，剔除最后一个元素。
        // 即冒泡元素个数变化为： n, n-1, n-2, n-3, ... , 0
        for (int i = 0; i < a.length; i++) {
            int flag;
            boolean exchange = false;
            for (int j = 0; j < a.length-1-i ; j++) {
                if (a[j] > a[j+1]){
                    flag = a[j];
                    a[j] = a[j+1];
                    a[j+1] = flag;
                    exchange = true;
                }
            }
            System.out.println(String.format("第%d轮  ",i+1) +  Arrays.toString(a));
            if (!exchange){
                break;
            }
        }
    }
}
